In most computing systems, low level instruction code is used as an intermediary between the hardware components of the computing system and the operating software and other high level software executed on the computing system. This low level instruction code is known as BIOS, (Basic Input Output System). BIOS provides a set of software routines that allow high level software to interact with the hardware components of the computing system using standard calls.
An important function of BIOS is the initialization of the computing system. As part of this initialization process, BIOS performs a number of tasks, such as initializing and testing the hardware components of the computing system and starting the operating system resident in the computing system. The initialization and testing of the hardware is performed by a routine referred to as Power On Self Test (POST). POST is a series of functions or routines that perform various initialization and tests of the hardware. For example, POST includes code for testing the CPU, math coprocessor, timer ICs, DMA controllers, TRQ controllers, etc. of the motherboard of the computer. Further, POST performs various memory checks and initializations. POST also tests and initializes various devices that may be installed in the computing system, such as video ROM, network adapter cards, SCSI adapter cards, etc. If these devices are present, their contents are tested with a checksum test and initialization of the devices. Additionally, POST may include routines for the display of manufacturer logos and other information to the user during POST operation. After POST has finished, BIOS initiates the operating system of the computer.
A noted problem with conventional POST software design is that it must be specifically configured for the architecture of the computing system in which it is used. Specifically, different computer hardware manufacturers use different hardware designs and include different types of hardware in their systems. For proper initialization of a computing system, the POST program must be designed to perform initialization and testing of the various hardware components in different sequences for different computing systems based on their specific designs. For example, one motherboard design may require initialization of the CPU and DMA controllers prior to initialization of the timers for the IC's and IRQ routing, while another motherboard design may require initialization of IRQ routing prior to initialization of the DMA controllers. In light of this, POST designers must work in cooperation with motherboard and computing system designers to create a POST program that is compatible with the particular computing system's hardware designs and requirements.
Further, many hardware manufacturers also wish to display different information to the user during POST operation. For example, the maker of the video adapter card may wish to display their company logo during initialization of the card, or the manufacturer of the computing system may wish to display their company logo during start up. This displayed information may change overtime. For example, with each new generation of hardware, the manufacture may wish to alter the logo and other information displayed to the user.
In light of this, most POST programs are specifically designed to operate within a given computing system configuration. Specifically, during development, POST designers receive information from the hardware designers concerning the exact configuration of the hardware and the ordering of initialization of each piece of hardware. The POST designer may also receive information for display of logos and other information to be displayed during POST. POST designers must then alter the existing base code of POST to implement the specific changes needed to operate POST in the computing system. These alterations may include rewriting of present code, insertion of new code between existing code modules, and deletion of modules altogether.
As with many manufactured products, customization of the product has associated time and cost. Specifically, not only are their cost and time associated with the actual rewriting of the software, there are also concerns with debugging, validation, and certification of the software, once completed. Although many of the existing routines in POST may not be affected by rewrites, the entire POST software typically must be tested and validated prior to shipment. Most quality assurance programs require that any changes to the software will typically require testing and verification of the entire software. Software testing and verification is a time intensive and costly procedure that can significantly add to the price of the software and delay shipment.